Network devices generally process data in the form of data packets. When interconnected, network devices may receive data packets from source devices, such as personal computers, laptop computers, slate or tablet computers, cellular phones (including so-called “smart phones”), servers, or any other type of device capable of communicating data packets via a network of interconnected network devices. Certain types of network devices, referred to as routers, may route or otherwise forward these data packets received from the source devices through the network to a destination device identified by a destination address within a header of each of the data packets. The destination device may comprise personal computers, laptop computers, slate or tablet computers, cellular phones (including so-called “smart phones”), servers, or any other type of device capable of receiving data packets via a network of interconnected network devices.
In early networks, routers merely routed the data packets between one another without performing much in the way of additional services. The routers processed the data packet to identify the destination address to which this data packet was to be sent. Upon identifying the destination address, the routers then identified a port or interface over which to forward the data packet to its intended destination based on the destination address.
As networks developed over time, routers were developed that featured more sophisticated forms of packet processing. For example, current routers may now perform any number of checks to determine packet validity and/or integrity. Moreover, current routers may also extract data from packet headers to determine such things as a layer two (which is also known as a “data link layer”) media access control (MAC) address, an layer 3 (which is also known as a “network layer”) Internet protocol (IP) address, or any other information with regard to the various layers of the Open System Interconnection (OSI) model. These routers may also, in some instances, alter various aspects of the header data of the packets to replace or otherwise change certain aspects of the packet, such as a layer two domain, to provide for certain functionality required by certain services or protocols.